package com.zenquery.util;
import org.apache.commons.dbcp2.BasicDataSource;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by willy on 23.04.14.
*/
public class BasicDataSourceFactory {
private Properties databaseDriverProperties;
private Map<String, BasicDataSource> dataSources;
public BasicDataSourceFactory() {
dataSources = new HashMap<String, BasicDataSource>();
}
public void setDatabaseDriverProperties(Properties databaseDriverProperties) {
this.databaseDriverProperties = databaseDriverProperties;
}
public BasicDataSource getBasicDataSource(
String url,
String username,
String password
) {
Pattern pattern = Pattern.compile("jdbc:(\\w+?):");
Matcher matcher = pattern.matcher(url);
String driverClassName = "";
String validationQuery = "";
if (matcher.find()) {
driverClassName = databaseDriverProperties.getProperty("drivers." + matcher.group(1));
validationQuery = databaseDriverProperties.getProperty("validationQueries." + matcher.group(1));
}
BasicDataSource dataSource = dataSources.get(url);
if (dataSource == null) {
dataSource = new BasicDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setUrl(url);
dataSource.setMaxIdle(5);
dataSource.setValidationQuery(validationQuery);
dataSources.put(url, dataSource);
}
return dataSource;
}
}